#ifndef ABSTRACTMOBILEOBJECT_H
#define ABSTRACTMOBILEOBJECT_H

#include "AbstractSituatedObject.hpp"
#include "Tools/Tools.h"

class AbstractMobileObject : public AbstractSituatedObject{
protected:
    double m_maxLinearAcceleration, m_maxAngularAcceleration;
    double m_currentAngularSpeed;
    Vector2D *m_linearMove;

public:
    AbstractMobileObject(double mla, double maa):
        m_maxLinearAcceleration(mla),
        m_maxAngularAcceleration(maa),
        m_currentAngularSpeed(0),
        m_linearMove(new Vector2D),
        AbstractSituatedObject(){}
    virtual~AbstractMobileObject(){};
    Vector2D* computeTranslation(Vector2D*);
    double computeRotation(double);

    void move(double, double);
    void rotate(double);
    Vector2D getLinearMove(){ return *m_linearMove; }
};

#endif // ABSTRACTMOBILEOBJECT_H
